﻿
namespace Sparklings.Rendering
{
    /// <summary>
    /// A Level element that can be displayed.
    /// </summary>
    public interface IRenderable
    {
        void LoadGraphicsRelatedElements();
        /// <summary>
        /// Draws the element base, i.e. its diffuse color.
        /// </summary>
        /// <param name="rc"></param>
        void DrawBase(RenderContext rc);
        /// <summary>
        /// Draws the additive composant of the element. Usually it is the particles.
        /// </summary>
        /// <param name="rc"></param>
        void DrawAdditive(RenderContext rc);
        /// <summary>
        /// Draws the light emited by the element. This light is combined additively,
        /// then blended multiplicatively with the base.
        /// </summary>
        /// <param name="rc"></param>
        void DrawLight(RenderContext rc);
        /// <summary>
        /// Draws the emmisive component of the element color.
        /// </summary>
        /// <param name="rc"></param>
        void DrawEmissive(RenderContext rc);
    }
}
